<?php

/**
 * Объекты этого класса используются в качестве "ответов" методов модулей
 */
class ModuleResponse implements iModuleResponse {
	
	private
		$template    = '',
		$aObjects    = array (),
		$aAttributes = array ();
		
	public function __construct ($template = NULL) {
		if ($template !== NULL) {
			$this->setTemplate($template);
		}
	}
	
	/**
	 * Устанавить путь до шаблона относительно папки с шаблонами
	 * @paran string $template
	 * @return void
	 */
	public function setTemplate ($template) {
		if (substr($template, 0, 1) == '/') {
			$template = substr($template, 1);
		}
		$this->template = $template;
	}
	
	/**
	 * Возврашает относительный путь до шаблона
	 * @return string
	 */
	public function getTemplate () {
		return $this->template;
	}
	
	/**
	 * Добавить объект
	 * @param object $object
	 * @return void
	 */
	public function addObject ($object) {
		$this->aObjects[] = $object;
	}
	
	/**
	 * Добавить несколько объектов
	 *
	 * @param array $aObjects
	 * @return void
	 */
	public function addObjects(array $aObjects) {
		$this->aObjects = array_merge($this->aObjects, $aObjects);
	}
	
	/**
	 * Получить список всех объектов
	 * @return array
	 */
	public function getObjects () {
		return $this->aObjects;
	}
	
	/**
	 * Установить атрибут
	 * @param string $name имя атрибута
	 * @param mixed $value значение
	 * @return void
	 */
	public function setAttribute ($name, $value) {
		if ($name != '') {
			$this->aAttributes[$name] = $value;
		}
	}
	
	/**
	 * Установить несколько атрибутов
	 *
	 * @param array $aAttributes
	 * @return void
	 */
	public function setAttributes(array $aAttributes) {
		$this->aAttributes = array_merge($this->aAttributes, $aAttributes);
	}
	
	/**
	 * Получить список параметров
	 * @return array
	 */
	public function getAttributes () {
		return $this->aAttributes;
	}
	
}